package cn.seaboot.admin.user.dao;

import cn.seaboot.admin.user.bean.Permit;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Dao
 * t_sys_perm
 * <p>
 *
 * @author Mr.css on 2018-6-20
 */
@Repository
public interface PermitDao {
    /**
     * 增
     *
     * @param perm pojo
     * @return affected rows
     */
    int insert(Permit perm);

    /**
     * 删
     *
     * @param id id
     * @return affected rows
     */
    int deleteById(String id);

    /**
     * 删除全部子级
     *
     * @param path path
     * @return affected rows
     */
    int deleteChild(String path);

    /**
     * 改
     *
     * @param perm pojo
     * @return affected rows
     */
    int updateSampleById(Permit perm);

    /**
     * 查
     *
     * @param id id
     * @return pojo
     */
    Permit selectById(String id);

    /**
     * 查询子级的最大路径值
     *
     * @param id id
     * @return path
     */
    String selectMaxChildrenPath(String id);

    /**
     * 查列表
     *
     * @return listMap
     */
    List<Permit> selectList();

    /**
     * 查询子级数量
     *
     * @param pid pid
     * @return cnt
     */
    int selectChildrenCnt(String pid);

    /**
     * 自己有权限的菜单，全部数据
     *
     * @param roleId 角色 ID
     * @return list
     */
    List<Permit> selectPermitByRoleId(String roleId);

    /**
     * 当前用户有权限的菜单，数据量较小，用于缓存
     *
     * @param roleId 角色 ID
     * @return list
     */
    List<String> selectPermitAuthority(String roleId);
}
